package Principal;
import EcNoLineales.*;
import Elementos.*;
import MetodosSistEcLineales.EliminacionGauss;
import PVI.MetodosPVI;


public class PracticasNumerico {

	
	
	public static void ecuacionesDiferenciales(){
		
		/*
		Funciones unaFuncion8 = new EcDiferencialGuia8();
		double unPasoK=0.00125;
		double extremoA=0;
		double extremoB=0.1;
		double tinicial=0;
		double Uinicial=1;
		MetodosResolucion.euler(unaFuncion8, unPasoK, extremoA, extremoB, tinicial, Uinicial);
		*/
		Funciones unaFuncion = new EcDiferencialGuia8();
		double unPasoK=0.1;
		double extremoA=0;
		double extremoB=1;
		double tinicial=0;
		double Uinicial=1;
		MetodosPVI.puntoMedio(unaFuncion, unPasoK, extremoA, extremoB, tinicial, Uinicial);
	}
	
	public static void eliminacionGauss(){
		
		
		String rutaArchivoMatriz = "Input/matrizA16.xml";
		Matriz unaMatriz = new Matriz(rutaArchivoMatriz);
		String rutaArchivoVector = "Input/unVectorB16.xml";
		Vector unVector = new Vector(rutaArchivoVector);
		System.out.println("Matriz y vector");
		unaMatriz.imprimirPorConsola();
		unVector.imprimirPorConsola();
		SistemaEcuacionLineal unSistEcuaciones= new SistemaEcuacionLineal(unaMatriz,unVector);
		Vector unVectorSolucion= EliminacionGauss.gaussSimple(unSistEcuaciones);
		System.out.println("Solucion del sistema");
		unVectorSolucion.imprimirPorConsola();
		System.out.println("Verificacion");
		unaMatriz.imprimirPorConsola();
		System.out.print("Vector B original   ");
		unVector.imprimirPorConsola();
		System.out.println("");
		System.out.print("Vector B calculado  ");
		unaMatriz.multiplicar(unVectorSolucion).imprimirPorConsola();
		
		
	}
	
	public static void eliminacionGaussTrunca(){
		
		
		String rutaArchivoMatriz = "Input/matrizA16.xml";
		Matriz unaMatriz = new Matriz(rutaArchivoMatriz);
		String rutaArchivoVector = "Input/unVectorB16.xml";
		Vector unVector = new Vector(rutaArchivoVector);
		System.out.println("Matriz y vector");
		unaMatriz.imprimirPorConsola();
		unVector.imprimirPorConsola();
		int nDec = 4;
		SistemaEcuacionLineal unSistEcuaciones= new SistemaEcuacionLineal(unaMatriz,unVector);
		Vector unVectorSolucion= EliminacionGauss.gaussSimpleTruncado(unSistEcuaciones,nDec);
		System.out.println("Solucion del sistema truncada en " + nDec);
		unVectorSolucion.imprimirPorConsola();
		System.out.println("Verificacion");
		unaMatriz.imprimirPorConsola();
		System.out.print("Vector B original   ");
		unVector.imprimirPorConsola();
		System.out.println("");
		System.out.print("Vector B calculado  ");
		unaMatriz.multiplicar(unVectorSolucion).imprimirPorConsola();
		System.out.println("Multiplicadores  mij");
		unaMatriz.mostrarMultiplicadoresXConsola();
		
	}
	
	
	public static void raicesEcNoLinealesPF(){
		
		FuncionUnaVariable unaEcNoLineal = new Probl22();
		double semilla = 1;
		int    cantMaxIt=20;
		double tolerancia=0.0001;
		MetodosIterativos.puntosFijos(unaEcNoLineal,
									semilla, 
									cantMaxIt, 
									tolerancia, 
									MetodosIterativos.k_nr_modificado);
	}

	public static void raicesEcNoLinealesSecante(){
		
		FuncionUnaVariable unaEcNoLineal = new Probl25();
		double semilla = 1;
		double otraSemilla = 1.1;
		int    cantMaxIt=20;
		double tolerancia=0.0001;
		MetodosIterativos.aplicarSecante(unaEcNoLineal, 
										 semilla, 
										 otraSemilla, 
										 cantMaxIt, 
										 tolerancia); 
									
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		raicesEcNoLinealesSecante();

	}

}
